#ifndef _FOREST_LOADER_DEMO_STATE_
#define _FOREST_LOADER_DEMO_STATE_

#include "FEApplication.h"
#include "KeyboardInputListener.h"
#include "MouseInputListener.h"

#include "FreeCameraHandler.h"

#include "StatPanel.h"
#include "TextLabel.h"

#include "PrimitiveCube.h"
#include "ForestLoader.h"
#include "Entity.h"


class ForestLoaderDemoState : public FEngine::FEApplication, public FEngine::KeyboardInputListener, public FEngine::MouseInputListener
{

	public:

		ForestLoaderDemoState();
		~ForestLoaderDemoState();
		void initialize();
		
		void updateGUI(double _elapsedTime);
		void update(double _elapsedTime);
		void render(double _elapsedTime);

		void keyPressed(int _key);
		void keyReleased(int _key);
		void mouseButtonPressed(int _button, const Vector2& _position);
		void mouseButtonReleased(int _button, const Vector2& _position);
		void mouseMoved(const Vector2& _delta);
		

	private:

		FEngine::FreeCameraHandler* mCameraHandler;
		StatPanel*					mStatPanel;

		std::list<FEngine::TextLabel*> mListLabels;

		bool						mShowLoader;
		FEngine::ForestLoader*		mForestLoader;
		std::list<FEngine::Entity*> mListEntity;
		FEngine::Node*				mForestObjectNode;
		LPDIRECT3DTEXTURE9			mEntityTexture;
		FEngine::PrimitiveCube*		mGround;
		
		FEngine::TextLabel*			mLabelTypeObject;
		FEngine::TextLabel*			mLabelNumberObject;
};

#endif
